﻿using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FieldTools.Client.Entity.OneBot
{
    public class OneBotEventNoticeInfo : OneBotEventBaseInfo
    {
        /// <summary>
        /// 通知类型，
        /// group_upload（群文件上传），
        /// group_admin（群管理员变动），
        /// group_decrease（群成员减少），
        /// group_increase（群成员增加），
        /// group_ban（群禁言）,
        /// friend_add（好友添加），
        /// group_recall（群消息撤回），
        /// friend_recall（好友消息撤回）
        /// </summary>
        [JsonProperty("notice_type")]
        public string NoticeType { get; set; }
        /// <summary>
        /// 群号
        /// </summary>
        [JsonProperty("group_id")]
        public long GroupId { get; set;}
        /// <summary>
        /// group_upload时为发送者QQ号，
        /// group_admin时为管理员QQ号，
        /// group_decrease时为离开者QQ号，
        /// group_increase时为加入者QQ号，
        /// group_ban时为被禁言 QQ 号，
        /// friend_add时为新添加好友 QQ 号，
        /// group_recall时为消息发送者 QQ 号，
        /// friend_recall时为好友 QQ 号
        /// </summary>
        [JsonProperty("user_id")]
        public long UserId { get; set;}


        /// <summary>
        /// group_upload，群文件上传事件。文件信息
        /// </summary>
        [JsonProperty("file")]
        public GroupFile File { get; set; }
        /// <summary>
        /// 事件子类型。
        /// group_admin时set、unset分别表示设置和取消管理员；
        /// group_decrease时leave、kick、kick_me分别表示主动退群、成员被踢、登录号被踢；
        /// group_increase时approve、invite分别表示管理员已同意入群、管理员邀请入群；
        /// group_ban时ban、lift_ban分别表示禁言、解除禁言
        /// </summary>
        [JsonProperty("sub_type")]
        public string SubType { get; set; }
        /// <summary>
        /// group_decrease、group_increase、group_recall。操作者 QQ 号（如果是主动退群，则和 user_id 相同）
        /// </summary>
        [JsonProperty("operator_id")]
        public long OperatorId { get; set; }
        /// <summary>
        /// group_ban.禁言时长，单位秒
        /// </summary>
        [JsonProperty("duration")]
        public long Duration { get; set; }
        /// <summary>
        /// group_recall、friend_recall。被撤回的消息 ID
        /// </summary>
        [JsonProperty("message_id")]
        public long MessageId { get; set; }
    }

    /// <summary>
    /// 文件信息
    /// </summary>
    public class GroupFile
    {
        /// <summary>
        /// 文件 ID
        /// </summary>
        [JsonProperty("id")]
        public string Id { get; set; }
        /// <summary>
        /// 文件名
        /// </summary>
        [JsonProperty("name")]
        public string Name { get; set; }
        /// <summary>
        /// 文件大小（字节数）
        /// </summary>
        [JsonProperty("size")]
        public long Size { get; set; }
        /// <summary>
        /// 保留字段
        /// </summary>
        [JsonProperty("busid")]
        public long Busid { get; set; }

    }

    public class QuickeHandleNoticeInfo
    {

    }
}
